// hdu5559
// 题意：要构造一个长度为n的串，恰巧包含m个非空不重复回文子串，且只用前k个大写字母。
//
// 题意：good prob. 可以观察出一个性质，长度为n的不重复回文子串最多不会超过n个，
//       然后可以通过aaaaaabcabcabc的形式构造小于等于n的任意长度，
//       k>=3的情况，k=1的情况trival，主要是k=2的情况。可以打个表找规律，
//       或者aa, ba, bb这个组合来当作原来的abc构造abcabcabc，
//       然后处理那个边界。
//
//       那个回文串个数证明还不会，然后程序里要特殊处理n=8, m=7的情况。
//
// 统计：140ms
//
// run: $exec < input
#include <iostream>
#include <string>

int n, m, k;
//std::string magic = "aababb";
std::string magic = "BABBAA";
std::string im = "Impossible";

void draw(int n, std::string const & s)
{
	for (int i = 0; i < n; i++) std::cout << s;
}

int main()
{
	std::ios::sync_with_stdio(false);
	int T; std::cin >> T;
	for (int ti = 1; ti <= T; ti++) {
		if (ti > 1) std::cout << '\n';
		std::cout << "Case #" << ti << ":\n";
		std::cin >> n >> m >> k;
		if (m > n) std::cout << im;
		else if (n == m) draw(n, "A");
		else if (k == 1) std::cout << im;
		else if (k >= 3) {
			if (m <= 2) { std::cout << im; continue; }
			draw(m - 3, "A");
			for (int i = 0; i < n - m + 3; i++) std::cout << char('A' + (i % 3));
		} else {
			if (n == 8 && m == 7) std::cout << "AABABBAA";
			else if (n <= 7) {
				if (n != m) std::cout << im;
				else draw(n, "A");
			} else {
				if (m < 8) std::cout << im;
				else {
					std::string ss = "AABABBAA";
					int tot = 8;
					for (; (int)ss.size() <= n; ) ss += magic;
					int tt = m - tot;
					draw(tt, "A");
					for (int i = 0; i < n - tt; i++) std::cout << ss[i];
				}
			}
		}
	}
}

